ソフトウェア基礎論配布資料 単純型付
λ計算
—補遺
五十嵐 淳
京都大学 大学院情報学研究科知能情報学専攻
e-mail: [email protected]平成
16年
11月
16日
4
諸性質
4.1 定理 [Uniquness of Typing]: Γ`t:T かつ Γ`t:T0 ならばT ≡T0 である.
4.2 定理 [Type Preservation]: Γ`t:T かつ t−→v t0 ならば,Γ`t0:T である.
4.3 定理 [Progress]: • `t:T ならば tは値であるか,ある項 t0が存在してt−→v t0 である.
4.4 定理 [Normalization]: Γ ` t:T かつ t が fix を含まないならば t −→v t1 −→v · · · −→v
tn−→v· · · なる無限列は存在しない.
5 Type Preservation
と
Progressの略証
5.1 Lemma [Inversion]: 1. もし Γ`λx:T1.t0 :T ならば,T1, T2 が存在してT ≡T1→T2 か つΓ, x:T1 `t0:T2 が成立する.
2. もし Γ`t1 t2 :T ならば,T1 が存在してΓ`t1:T1→T かつ Γ`t2 :T1 が成立する.
3. もし Γ`if t1 then t2 else t3 :T ならば,Γ`t1 :bool かつ Γ`t2 :T かつ Γ`t3 :T などなど.
Proof: (変数参照項を除いて)項について適用できる型付け規則がひとつなので,型付け規則を逆
(下から上)に読むことによって明らか. ¤
5.2 Lemma [Substitution Preserves Typing]: Γ, x : T0 ` t : T かつ Γ ` t0 : T0 ならばΓ ` [x7→t0]t:T が成立する.
Proof: [x7→t0]t≡ ⇓x([(⇑xt0)/x]t) に注意すると,以下の三つを示せばよい,
• Γ`t:T ならば Γ, x:T0 ` ⇑xt:T
1
• Γ, x:T0 `t:T かつ x6∈F V(t) ならばΓ` ⇓xt:T
• Γ, x:T0 `t:T かつ Γ, x:T0 `t0 :T0 ならば Γ, x:T0 `[t0/x]t:T かつ x6∈F V([t0/x]t) 最初の二つは,項の構成に関する帰納法で証明できる.最後のものは,命題をもう少し一般化してか
ら,型付け関係の導出に関する帰納法で証明できる. ¤
Proof of Type Preservation: t−→v t0 の導出に関する帰納法で証明する.帰納法のbase に相 当するのはEv-AbsApp など前提のない規則で t−→v t0 が導出された場合である.
• 規則 Ev-AbsApp の場合,あるx, T0, t0, v2 が存在してt≡(λx:T0.t0)v2 かつt0 ≡[x7→v2]t0
である.Inversionより,Γ, x:T0 `t0 :T かつ Γ`v2:T0 が成立する.Substitution Preserves Typing よりΓ`[x7→v2]t1:T つまりΓ`t0:T である.
• 規則 Ev-FixAbs の場合,. . .
• 規則 Ev-PlusZero の場合,. . .
• などなど.
帰納法のステップに相当するのは,前提のある規則でt−→v t0 が導出された場合である.この時,
前提として成立しているt0 −→v t00 に関してはType Preservation が成立しているとしてよい(帰納 法の仮定).
• 規則 Ev-App1の場合,ある t1, t2, t01 が存在してt≡t1t2 かつ t0≡t01t2 かつt1 −→v t01 が成 立する.Inversionより,あるT1 が存在してΓ`t1 :T1 →T かつΓ`t2 :T1 である.帰納法 の仮定よりΓ`t01:T1 →T が成立する.T-AppよりΓ`t01t2 :T が導出できる.
• などなど. ¤
5.3 Lemma [Canonical Forms]: 1. もし • ` v :T1 → T2 ならば,ある x, T1, t0 が存在して v≡λx:T1.t0 が成立する.
2. もし • `v:natならば,v≡0またはあるnが存在してS(n)が成立する.
3. もし • `v:boolならば, v≡true またはv≡false
Proof of Progress: 型付け関係• `t:T に関する帰納法で証明する.tの形で場合分けを行なう.
• t≡#nx の場合はあり得ない.
• t≡λx:T.t0 の場合,tは値である.
• t≡t1 t2 の場合,Inversion より,あるT1 が存在して• `t1 :T1 →T かつ• `t2 :T1 が成立 する.帰納法の仮定よりt1 が値であるか,あるt01 が存在してt1 −→v t01 である.前者の場合,
Canonical Forms よりt1 ≡λx:T1.t0 であるので,Ev-AbsApp よりt1 t2 −→v [x 7→ t2]t0 を 導出することができる.一方,後者の場合,Ev-App1 よりt1 t2−→v t01 t2 を導出することが でき,結局t−→v t0 なる t0 が存在する.
• などなど. ¤
2